
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>说说你理解的MybatisPlus? - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>说说你理解的MybatisPlus? - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">MyBatis-Plus 的核心目标是什么？它与 MyBatis 的关系是怎样的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">MyBatis-Plus 的核心目标是简化 MyBatis 的使用并提高开发效率。它是一个基于 MyBatis 的增强工具，在其基础上增加了许多自动化和简化的功能。</div>
          </div>
          <div class="card-source">来源: 文档开篇介绍</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">在 MyBatis-Plus 中，如何实现自动化的 CRUD 操作而无需编写具体的 SQL 语句？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">通过让 Mapper 接口继承 `BaseMapper` 接口，即可自动获得如 `selectById`, `insert`, `updateById`, `deleteById` 等基本的 CRUD 操作方法，从而无需编写大量重复的 XML 配置或 SQL 语句。</div>
          </div>
          <div class="card-source">来源: 文档「MyBatis-Plus 的关键特点」部分中的「自动化的 CRUD 操作」</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">MyBatis-Plus 提供了哪些条件构造器来构建动态查询？它们的主要优点是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">MyBatis-Plus 提供了 `QueryWrapper` 和 `UpdateWrapper` 等条件构造器。它们的主要优点是支持链式调用，使得构造查询和更新条件更加直观和简洁。</div>
          </div>
          <div class="card-source">来源: 文档「MyBatis-Plus 的关键特点」部分中的「条件构造器」</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">MyBatis-Plus 的代码生成器可以根据数据库表自动生成哪些文件？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">代码生成器可以根据数据库表自动生成实体类、Mapper 接口以及 Mapper XML 文件。</div>
          </div>
          <div class="card-source">来源: 文档「MyBatis-Plus 的关键特点」部分中的「代码生成器」</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">什么是逻辑删除？MyBatis-Plus 是如何支持这一功能的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">逻辑删除是指通过一个标记字段来表示数据已被删除，而不是进行物理删除。MyBatis-Plus 通过配置可以实现此功能，并能自动处理逻辑删除标记字段，方便数据管理和恢复。</div>
          </div>
          <div class="card-source">来源: 文档「MyBatis-Plus 的关键特点」部分中的「逻辑删除支持」</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">MyBatis-Plus 的乐观锁插件是如何在并发场景下保证数据一致性的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">乐观锁插件通过一个版本号字段来实现乐观锁机制，可以在并发情况下防止数据的丢失和覆盖，从而确保数据的一致性。</div>
          </div>
          <div class="card-source">来源: 文档「MyBatis-Plus 的关键特点」部分中的「乐观锁插件」</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">在哪些开发场景下使用 MyBatis-Plus 特别有优势？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">MyBatis-Plus 特别适用于希望提升开发效率、减少繁琐操作的项目，尤其是在 CRUD 操作较多、需要快速构建数据访问层以及需要逻辑删除和分页等常见功能的场景。</div>
          </div>
          <div class="card-source">来源: 文档「MyBatis-Plus 的使用场景」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">MyBatis-Plus 的性能分析插件能为开发者提供哪些帮助？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">性能分析插件可以帮助开发人员查看 SQL 执行的时间、具体的 SQL 语句和相关参数等信息，这有助于优化 SQL 查询性能和进行性能调优。</div>
          </div>
          <div class="card-source">来源: 文档「MyBatis-Plus 的关键特点」部分中的「性能分析」</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">MyBatis-Plus 的内置分页插件有什么特点？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">它提供了简单易用的分页功能，通过配置插件即可轻松实现数据的分页查询。该插件能够自动处理 SQL 的分页逻辑，并且支持多种数据库。</div>
          </div>
          <div class="card-source">来源: 文档「MyBatis-Plus 的关键特点」部分中的「内置分页插件」</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
